昨天我們做的案例,是一條最簡單的直線流程:
把 Excel 檔下載下來 → 篩選出 AB 開頭的客戶 → 算好運費(固定每公斤 250 元) → 貼到 Google Sheets 報表,讓財務和客服可以使用。
這樣的流程雖然能解決眼前的需求,但也有個限制:它只能處理「AB 開頭」的客編。
如果今天公司想要把「非AB開頭」客編的資料存在另外一個 Google Sheet 檔案呢?
所以我們需要在流程裡多加一個「判斷」:先確認客編是不是 AB 開頭,再決定要把資料送去哪一份 Google Sheet。這時候,就該用到 If 節點了。
在原本的流程裡,我們是先用 Filter 節點篩選出 AB 開頭的客編,接著才把資料寫進 Google Sheet。
但現在我們要進階,把 Filter 拿掉,改成在 Edit Fields 算完運費之後,直接接上一個 If 節點。
在 If 節點裡,我們要設定一個條件,判斷「客戶編號」是不是以 AB 開頭。
步驟如下:
這樣一來,If 節點就會自動幫我們把資料分成兩條:True Branch:符合條件(AB 開頭)的訂單
False Branch:不符合條件(非 AB 開頭)的訂單
執行這個 Node 之後,從右側的 Output 也能看到,n8n 已經把資料拆分好,22 筆進了 True,11 筆進了 False。
接下來,我們只要把這兩條分別接到不同的 Google Sheet,就完成了自動分流。
上方的 Google Sheet Node 接收 AB開頭客編的資料,存到名稱為「客戶編號AB訂單」的檔案;
下方的 Google Sheet Node 接收 非AB開頭客編的資料,存到名稱為「客戶編號非AB訂單」的檔案;
剛剛我們用 If 節點,已經成功做到「AB 與非 AB」的二分法。這樣的做法,在只有兩種情況的時候非常好用。
但是,實際的業務場景往往不只兩種情況。
例如:非 AB 的客編裡面,還有 CT 開頭、MG 開頭,而且公司希望這些不同的客戶群,能分別存在不同的 Google Sheet,方便負責不同客戶的業務各自查看。
如果還是用 If,一個一個去寫條件,就會變得很繁瑣。
這時候,最適合的工具就是 Switch 節點。
在 If 案例裡,我們只能分成「AB」和「非 AB」兩類。
但實際情境中,非 AB 的客編可能還有 CT 開頭、MG 開頭,公司希望把這些資料分流到不同的 Google Sheet,方便不同業務查看。
這時候,我們就要改用 Switch 節點。
Switch 節點設定步驟
運作結果
Switch 節點會自動幫我們把資料分流:
接下來,這三個輸出就能分別接到三個 Google Sheet Node,把不同客戶的訂單資料,存在不同的表單裡。
剛剛我們透過 Switch 節點,已經可以把不同開頭的客編分流到各自的 Google Sheet。
但接下來有一個更真實的需求:不同客戶的運費單價都不一樣。
例如:
如果還是用固定數字去算,結果一定會錯。
這時候,我們就需要先去查一份「客戶運費單價表」,再把單價帶回訂單資料,最後才正確算出運費。
這就是 Merge 節點能派上用場的地方。
節點流程
我們準備了兩份資料:
接著在 Merge 節點裡,設定以下參數:
運作結果
執行之後,每一筆訂單資料就會自動帶上對應的「每公斤運費」。
接下來只要再加上計算運費的欄位(重量 × 單價),就能得到正確的運費結果。
情境說明
在實務上,一個 Excel 檔案裡常常會包含多個工作表(Sheets)。
例如:
節點流程
// 要處理的 Sheet 清單
const sheetNames = ["Sheet1", "Sheet2", "Sheet3"];
const output = [];
for (const name of sheetNames) {
output.push({
json: { sheetName: name },
binary: items[0].binary // 保留原本的 Excel 檔案
});
}
return output;
這樣會輸出三筆資料,每筆都有:
Loop Over Items 設定
在 Loop 節點裡,把 Batch Size 設定為 1。
這代表一次只處理一筆資料,也就是一次讀一個 Sheet。
Extract from File 動態帶入 Sheet Name
接著,在 Extract from File (XLSX) 節點的 Sheet Name 欄位,不要直接寫死名稱,而是改成用變數:{{$json.sheetName}}
這樣流程每次跑 Loop 時,會自動把當前 item 的 sheetName 帶進去。
第一次跑就讀 Sheet1,第二次跑讀 Sheet2,第三次跑讀 Sheet3。
運作效果
執行後,n8n 就會依序把 Excel 裡三個 Sheet 的資料都讀進來,然後再送到後面的 Merge → Edit Fields → Switch → Google Sheets,整條流程就能自動處理多個工作表的訂單。
到這裡,我們已經把同一個物流訂單案例,拆解成四個進階應用:
透過這四個案例,你可以看到 n8n 的威力不只是在「自動化」動作,更能夠像寫程式一樣,有條件判斷、分支路線、資料合併,以及批次處理。
從明天開始,我們要把自動化的範例,從內部報表轉到社群發文自動化。
也就是說,不再只是處理檔案和數據,而是直接幫你把文章、圖片,自動排程發佈到社群平台(例如 FB/IG/Threads)。
想知道怎麼用 n8n 幫你「一鍵發文」,記得繼續跟上 Day 13!